/*
 * Copyright 2018 JessYan
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.eduhzy.ttw.commonsdk.core;

/**
 * ================================================
 * RouterHub 用来定义路由器的路由地址, 以组件名作为前缀, 对每个组件的路由地址进行分组, 可以统一查看和管理所有分组的路由地址
 * <p>
 * RouterHub 存在于基础库, 可以被看作是所有组件都需要遵守的通讯协议, 里面不仅可以放路由地址常量, 还可以放跨组件传递数据时命名的各种 Key 值
 * 再配以适当注释, 任何组件开发人员不需要事先沟通只要依赖了这个协议, 就知道了各自该怎样协同工作, 既提高了效率又降低了出错风险, 约定的东西自然要比口头上说强
 * <p>
 * 如果您觉得把每个路由地址都写在基础库的 RouterHub 中, 太麻烦了, 也可以在每个组件内部建立一个私有 RouterHub, 将不需要跨组件的
 * 路由地址放入私有 RouterHub 中管理, 只将需要跨组件的路由地址放入基础库的公有 RouterHub 中管理, 如果您不需要集中管理所有路由地址的话
 * 这也是比较推荐的一种方式
 * <p>
 * 路由地址的命名规则为 组件名 + 页面名, 如订单组件的订单详情页的路由地址可以命名为 "/order/OrderDetailActivity"
 * <p>
 * ARouter 将路由地址中第一个 '/' 后面的字符称为 Group, 比如上面的示例路由地址中 order 就是 Group, 以 order 开头的地址都被分配该 Group 下
 * 切记不同的组件中不能出现名称一样的 Group, 否则会发生该 Group 下的部分路由地址找不到的情况!!!
 * 所以每个组件使用自己的组件名作为 Group 是比较好的选择, 毕竟组件不会重名
 *
 * @see <a href="https://github.com/JessYanCoding/ArmsComponent/wiki#3.4">RouterHub wiki 官方文档</a>
 * Created by JessYan on 30/03/2018 18:07
 * <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
 * <a href="https://github.com/JessYanCoding">Follow me</a>
 * ================================================
 */
public interface RouterHub {
    /**
     * 组名
     */
    String APP = "/app";//宿主 App 组件
    String WORK = "/WORK";//宿主 App 组件
    String CLAZZ = "/CLAZZ";//宿主 App 组件
    String ZHIHU = "/zhihu";//知乎组件
    String GANK = "/gank";//干货集中营组件
    String GOLD = "/gold";//稀土掘金组件
    String RXFEATURE = "/rxfeature";//rxfeature组件
    String COURSELIVE = "/courselive";//直播课程组件;
    String RATING = "/rating";//活动评分组件;
    /**
     * 服务组件, 用于给每个组件暴露特有的服务
     */
    String SERVICE = "/service";


    /**
     * 宿主 App 分组
     */
    String APP_SPLASHACTIVITY = APP + "/SplashActivity";
    String APP_LOGINACTIVITY = APP + "/LoginActivity";
    String APP_MAINACTIVITY = APP + "/MainActivity";
    String APP_REGISTERACTIVITY = APP + "/RegisterActivity";

    /**
     * 知乎分组
     */
    String ZHIHU_SERVICE_ZHIHUINFOSERVICE = ZHIHU + SERVICE + "/ZhihuInfoService";

    String ZHIHU_HOMEACTIVITY = ZHIHU + "/HomeActivity";
    String ZHIHU_DETAILACTIVITY = ZHIHU + "/DetailActivity";

    /**
     * 干货集中营分组
     */
    String GANK_SERVICE_GANKINFOSERVICE = GANK + SERVICE + "/GankInfoService";

    String GANK_HOMEACTIVITY = GANK + "/HomeActivity";

    /**
     * res分组
     */
    String APP_WEBVIEWACTIVITY = APP + "/WebViewActivity";
    /**
     * 稀土掘金分组
     */
    String GOLD_SERVICE_GOLDINFOSERVICE = GOLD + SERVICE + "/GoldInfoService";


    String GOLD_HOMEACTIVITY = GOLD + "/HomeActivity";
    String GOLD_DETAILACTIVITY = GOLD + "/DetailActivity";

    String APP_FORGETPWDACTIVITY = APP + "/ForgetPWDActivity";
    String APP_PHONEVERIFYACTIVITY = APP + "/PhoneVerifyActivity";
    String APP_RESETPASSWORDACTIVITY = APP + "/ResetPasswordActivity";
    String APP_MINEFRAGMENT = APP + "/MineFragment";
    String APP_HOMEACTIVITY = APP + "/HomeActivity";
    String APP_CLIPIMAGEACTIVITY = APP + "/ClipImageActivity";
    String APP_SETUPACTIVITY = APP + "/SetUpActivity";
    String APP_CHANGEPASSWORDACTIVITY = APP + "/ChangePasswordActivity";

    String APP_PERSONINFOACTIVITY = APP + "/PersonInfoActivity";
    String APP_MINECLASSACTIVITY = APP + "/MineClassActivity";
    String APP_CREATECLASSACTIVITY = APP + "/CreateClassActivity";
    String APP_CHOOSECLASSACTIVITY = APP + "/ChooseClassActivity";
    String APP_PERSONUPDATEACTIVITY = APP + "/PersonUpdateActivity";
    String APP_CREATECLASSSUCCESSACTIVITY = APP + "/CreateClassSuccessActivity";
    String APP_CLASSDETAILSACTIVITY = APP + "/ClassDetailsActivity";
    String APP_CLASSTEACHERACTIVITY = APP + "/ClassTeacherActivity";
    String APP_CHOOSESUBJECTACTIVITY = APP + "/ChooseSubjectActivity";
    String APP_CLASSTRANSFERACTIVITY = APP + "/ClassTransferActivity";
    String APP_CLASSSTUDENTACTIVITY = APP + "/ClassStudentActivity";

    String APP_JOINCLASSACTIVITY = APP + "/JoinClassActivity";
    String APP_MINESCHOOLACTIVITY = APP + "/MineSchoolActivity";
    String APP_CHOOSESCHOOLACTIVITY = APP + "/ChooseSchoolActivity";
    String APP_HOMEFRAGMENT = APP + "/HomeFragment";
    String APP_CONTACTFRAGMENT = APP + "/ContactFragment";
    String APP_DISCOVERFRAGMENT = APP + "/DiscoverFragment";
    String APP_PLATFORMNOTICEACTIVITY = APP + "/PlatformNoticeActivity";
    String APP_VERIFYMESSAGEACTIVITY = APP + "/VerifyMessageActivity";
    String APP_UPDATEPHONEACTIVITY = APP + "/UpdatePhoneActivity";
    String APP_CONTACTDETAILSACTIVITY = APP + "/ContactDetailsActivity";
    /**
     * 直播课程分组
     */

    String COURSELIVE_MINEORDERFRAGMENT = COURSELIVE + "/MineOrderFragment";
    String COURSELIVE_MINEORDERACTIVITY = COURSELIVE + "/MineOrderActivity";
    String COURSELIVE_COURSELIVEMAINACTIVITY = COURSELIVE + "/CourseLiveMainActivity";
    String COURSELIVE_COURSELIVEFRAGMENT = COURSELIVE + "/CourseLiveHomeFragment";
    String COURSELIVE_COURSEDETAILSACTIVITY = COURSELIVE + "/CourseDetailsActivity";
    String COURSELIVE_COURSEINTRODUCTIONFRAGMENT = COURSELIVE + "/CourseIntroductionFragment";
    String COURSELIVE_COURSELISTFRAGMENT = COURSELIVE + "/CourseListFragment";
    String COURSELIVE_COURSECOMMENTFRAGMENT = COURSELIVE + "/CourseCommentFragment";
    String COURSELIVE_MYCOURSEACTIVITY = COURSELIVE + "/MyCourseActivity";
    String COURSELIVE_COURSEPLAYACTIVITY = COURSELIVE + "/CoursePlayActivity";
    String COURSELIVE_COURSELIVECOMMENTACTIVITY = COURSELIVE + "/CourseLiveCommentActivity";
    String COURSELIVE_ORDERPAYACTIVITY = COURSELIVE + "/OrderPayActivity";

    //rxfeature
    String RXFEATURE_ACTIVITYSCANERCODE = RXFEATURE + "/ActivityScanerCode";
    String APP_GENERATECODEACTIVITY = APP + "/GenerateCodeActivity";

    //活动评比分组
    String RATING_RATINGHOMEACTIVITY = RATING + "/RatingHomeActivity";
    String RATING_RATINGDETAILFRAGMENT = RATING + "/RatingDetailFragment";
    String RATING_RATINGDETAILACTIVITY = RATING + "/RatingDetailActivity";
    String RATING_ENTRIESFRAGMENT = RATING + "/EntriesFragment";
    String RATING_ENTRIESDETAILACTIVITY = RATING + "/EntriesDetailActivity";

    String RATING_VIDEOFRAGMENT = RATING + "/VideoFragment";
    String RATING_SIGNUP1ACTIVITY = RATING + "/SignUp1Activity";
    String RATING_SIGNUP2ACTIVITY = RATING + "/SignUp2Activity";
    String RATING_SIGNUP3ACTIVITY = RATING + "/SignUp3Activity";
    String RATING_SIGNUP4ACTIVITY = RATING + "/SignUp4Activity";
    String RATING_WINNINGWORKFRAGMENT = RATING + "/WinningWorkFragment";
    String RATING_MYWORKSACTIVITY = RATING + "/MyWorksActivity";
    String RATING_DOCUMENTFRAGMENT = RATING + "/DocumentFragment";
    String RATING_UPLOADSUCCESSACTIVITY = RATING + "/UploadSuccessActivity";
    String RATING_PICTUREFRAGMENT = RATING + "/PictureFragment";
    String APP_AUDIOPLAYFRAGMENT = RATING + "/AudioPlayFragment";
    String APP_UPDATECLASSACTIVITY = APP + "/UpdateClassActivity";
    String APP_NOTICEDETAILACTIVITY = APP + "/NoticeDetailActivity";
    String WORK_WORKHOMEACTIVITY = WORK + "/WorkHomeActivity";
    String WORK_WORKHOMEFRAGMENT = WORK + "/WorkHomeFragment";
    String WORK_WORKDETAILACTIVITY = WORK + "/WorkDetailActivity";
    String WORK_PUBLISHWORKACTIVITY = WORK + "/PublishWorkActivity";
    String WORK_WORKUNREADACTIVITY = WORK + "/WorkUnreadActivity";
    String WORK_WORKSTATUSACTIVITY = WORK + "/WorkStatusActivity";
    String WORK_WORKSTATUSFRAGMENT = WORK + "/WorkStatusFragment";
    String WORK_CHECKWORKACTIVITY = WORK + "/CheckWorkActivity";
    String WORK_WORKUNSUBMITFRAGMENT = WORK + "/WorkUnSubmitFragment";
    String CLAZZ_HOMEACTIVITY = CLAZZ + "/HomeActivity";
    String CLAZZ_CLAZZREVIEWACTIVITY = CLAZZ + "/ClazzReviewActivity";
    String CLAZZ_CLAZZREVIEWFRAGMENT = CLAZZ + "/ClazzReviewFragment";
    String CLAZZ_EDITREVIEWFRAGMENT = CLAZZ + "/EditReviewFragment";
    String CLAZZ_EDITREVIEWACTIVITY = CLAZZ + "/EditReviewActivity";
    String CLAZZ_DELETEREVIEWFRAGMENT = CLAZZ + "/DeleteReviewFragment";
    String CLAZZ_DELETEREVIEWACTIVITY = CLAZZ + "/DeleteReviewActivity";
    String CLAZZ_ADDREVIEWACTIVITY = CLAZZ + "/AddReviewActivity";
    String CLAZZ_CHOOSEICONACTIVITY = CLAZZ + "/ChooseIconActivity";
    String CLAZZ_GROUPREVIEWFRAGMENT = CLAZZ + "/GroupReviewFragment";
    String CLAZZ_GROUPLISTACTIVITY = CLAZZ + "/GroupListActivity";
    String CLAZZ_EDITGROUPACTIVITY = CLAZZ + "/EditGroupActivity";

    String CLAZZ_ADDGROUPACTIVITY = CLAZZ + "/AddGroupActivity";
    String CLAZZ_CLAZZREPORTACTIVITY = CLAZZ + "/ClazzReportActivity";
    String CLAZZ_CLAZZREPORTFRAGMENT = CLAZZ + "/ClazzReportFragment";
}
